This invention generally relates to providing remote devices in computer systems. More specifically, embodiments of the invention relate to remote PCIe devices in cloud computing environments.
Datacenter and cloud infrastructures are becoming more software defined and programmable with respect to their compute (C), network (N) and storage (S) components. This is largely being driven by virtualization technology, enabling a disaggregation of the computer/network/storage components for a flexible reassembly. Virtualization overhead and management of these disaggregated components becomes a critical component of infrastructure management. While compute and networking virtualization have made great strides integrating new technologies for efficient virtualization, PCIe connected devices, such as accelerators or graphics processing units (GPUs), remain an issue.
Many applications benefit or require direct use of such devices, but the use of virtualization to enhance system utilization often clashes with direct hardware access, especially when virtual machine (VM) migration and/or load balancing and distribution is desired. On the one hand, deploying GPU and/or accelerator inside every single system can be prohibitively expensive and not useful; on the other hand, distributing the computational load while, at the same time, allowing direct access to PCIe devices can be difficult if not impossible under specific service level agreements (SLAs).